home *** CD-ROM | disk | FTP | other *** search
/ Aminet 33 / Aminet 33 - October 1999.iso / Aminet / util / misc / VMM_src.lha / VMM / wb_patch.asm < prev   
Encoding:
Assembly Source File  |  1995-12-16  |  3.6 KB  |  90 lines

  1.                     INCLUDE   "exec/types.i"
  2.                     INCLUDE   "exec/memory.i"
  3.                     INCLUDE   "exec/funcdef.i"
  4.                     INCLUDE   "exec/exec_lib.i"
  5.                     INCLUDe   "macros.i"
  6.  
  7.                     XDEF      _SetWindowTitlesPatch
  8.                     XREF      _OrigSetWindowTitles
  9.                     XREF      _strncmp
  10.                     XREF      _sprintf
  11.                     XREF      _VirtMem
  12.  
  13.                     MACHINE   68030
  14.  
  15.                     SECTION   CODE
  16.  
  17. _SetWindowTitlesPatch:
  18.                     * called with:
  19.                     * A0: Window
  20.                     * A1: WindowTitle
  21.                     * A2: ScreenTitle
  22.  
  23.                     tst.l     a2       
  24.                     beq       CallOrigFunc2       ; check for 0 and -1
  25.                     moveq     #-1,d0              ; otherwise Enforcer hits
  26.                     cmp.l     d0,a2               ; would result
  27.                     beq       CallOrigFunc2
  28.  
  29.                     movem.l   a0-a1/a3,-(sp)
  30.                     lea       WBString1(pc),a0
  31.                     pea       15                  ; length of WBString1
  32.                     pea       (a0)
  33.                     pea       (a2)
  34.                     move.l    a0,a3               ; remember cmp string
  35.                     jsr       _strncmp
  36.                     add.w     #3*4,sp
  37.                     tst.l     d0
  38.                     beq       DoPatch
  39.  
  40.                     lea       WBString2(pc),a0
  41.                     pea       11                  ; length of WBString2
  42.                     pea       (a0)
  43.                     pea       (a2)
  44.                     move.l    a0,a3               ; remember cmp string
  45.                     jsr       _strncmp
  46.                     add.w     #3*4,sp
  47.                     tst.l     d0
  48.                     bne       CallOrigFunc1
  49.  
  50. * OK, the string is found produce a new one stating the amount of
  51. * all memory (including virtual)
  52.  
  53. DoPatch:            PRINT_DEB "Patching screen title"
  54.                     move.l    a6,-(sp)
  55.                     move.l    4,a6
  56.                     move.l    #MEMF_PUBLIC+MEMF_FAST,d1     ; Determine FAST PUBLIC mem
  57.                     jsr       _LVOAvailMem(a6)
  58.                     asr.l     #8,d0                         ; divide by 1024
  59.                     asr.l     #2,d0
  60.                     move.l    d0,-(sp)
  61.                     move.l    _VirtMem,a0
  62.                     move.l    MH_FREE(a0),d0                ; Determine VM
  63.                     asr.l     #8,d0                         ; divide by 1024
  64.                     asr.l     #2,d0
  65.                     move.l    d0,-(sp)
  66.                     move.l    #MEMF_PUBLIC+MEMF_CHIP,d1
  67.                     jsr       _LVOAvailMem(a6)              ; Determine CHIP mem
  68.                     asr.l     #8,d0                         ; divide by 1024
  69.                     asr.l     #2,d0
  70.                     move.l    d0,-(sp)
  71.                     move.l    a3,-(sp)
  72.                     lea       tmp_buffer(pc),a2
  73.                     pea       PatchString(pc)
  74.                     pea       (a2)
  75.                     jsr       _sprintf
  76.                     add.w     #6*4,sp
  77.                     move.l    (sp)+,a6
  78.                     PRINT_DEB "Done creating patched string"
  79.  
  80.                     * Fall through to calling original function
  81.  
  82. CallOrigFunc1       movem.l   (sp)+,a0-a1/a3
  83. CallOrigFunc2       move.l    _OrigSetWindowTitles,-(sp)
  84.                     rts
  85.  
  86. WBString1:          dc.b      "Amiga Workbench",0
  87. WBString2:          dc.b      "AmigaOS 3.1",0
  88. PatchString         dc.b      "%-15s     %ld KB Chip   %ld KB VM   %ld KB Public Fast",0
  89. tmp_buffer          ds.b      150
  90.